/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ifpb.pp.lp.managedbean;


import ifpb.pp.lp.entity.Cliente;
import ifpb.pp.lp.percistence.DAO;
import ifpb.pp.lp.percistence.DAOJPA;
import java.util.List;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;



/**
 *
 * @author Gabriella
 */

public class ClienteManager {

  
    private DAO dao;
    private Cliente cliente;
    private DataModel model;

    public ClienteManager() {
        this.cliente = new Cliente();
        this.dao = new DAOJPA();
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public String novoCliente() {
        this.cliente = new Cliente();
        return "novoCliente";
    }

    public DataModel getTodosClientes() {
        List<Cliente> listaClientes;
        try {
            listaClientes = (List<Cliente>) dao.listar(Cliente.class);
            this.model = new ListDataModel(listaClientes);
        } catch (Exception ex) {
            System.out.println("ERRO em getTodosClientes");
            ex.printStackTrace();
        }
        return this.model;
    }

    public String cadastrar() {
        try {
            if (dao.salvar(this.cliente)) {
                return novoCliente();
            }
        } catch (Exception ex) {
            System.out.println("ERRO em cadastrarClietes");
            ex.printStackTrace();
        }
        return "clienteErro";
    }

    public String remover() {
        try {
            Cliente cliente = getClienteParaAtualizarRemover();
            Cliente novoCliente = dao.buscar(Cliente.class, cliente.getId());
            System.out.println(novoCliente.getNome()+"Nomeeeeeeeeeeee");
            System.out.println(novoCliente.getId()+"IDddddddddddd");
            if (dao.remover(novoCliente)) {
                return "listarCliente";
            }
        } catch (Exception ex) {
            System.out.println("ERRO em cadastrarProdutos");
            ex.printStackTrace();
        }
        return "erro";
    }

    public Cliente getClienteParaAtualizarRemover() {
        Cliente c = (Cliente) this.model.getRowData();
        return c;
    }

    public String editar() {
        Cliente c = getClienteParaAtualizarRemover();
        this.setCliente(c);
        return "novoCliente";

    }

    public String atualizar() {
        Boolean resposta = false;
        try {
            resposta = dao.atualizar(this.cliente);
        } catch (Exception ex) {
            System.out.println("ERRO em atualizarClientes");
            ex.printStackTrace();
        }
        if (resposta) {
            return "clienteSucesso";
        }
        return "clienteErro";
    }


}
